package com.zhangsr.mongodb.client;

import com.mongodb.QueryBuilder;

/**
 * @param <E> bean泛型
 * @Author: zhangsr
 */
public interface MongoDBClient<E> {

    /**
     * 插入一个对象
     *
     * @param bean 插入内容
     * @return 是否成功
     */
    boolean insert(E bean);

    /**
     * 保存或更新一个对象(只更新一条记录)
     *
     * @param condition 查询条件
     * @param bean      要更新的内容
     * @return 是否成功  //插入则为true，更新返回false
     */
    boolean save(QueryBuilder condition, E bean);

    /**
     * 根据条件删除数据
     *
     * @param bean 数据内容
     * @return 是否成功
     */
    boolean delete(E bean);

    /**
     * 根据条件删除数据
     *
     * @param condition 删除条件
     * @return 是否成功
     */
    boolean delete(QueryBuilder condition);

    /**
     * 根据条件返回一个满足条件的数据
     *
     * @param condition 条件
     * @param beanClass 返回对象的类对象
     * @return 是否成功
     */
    E selectOne(QueryBuilder condition, Class<E> beanClass);
}
